package com.woniuxy.pxxt.dao;


import com.woniuxy.pxxt.common.vo.CourseEditVo;
import com.woniuxy.pxxt.common.vo.CourseManageVo;
import com.woniuxy.pxxt.common.vo.FileVo;
import com.woniuxy.pxxt.dto.*;
import com.woniuxy.pxxt.entity.Course;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 是培训项目下的阶段(PxxtCourse)表数据库访问层
 *
 * @author makejava
 * @since 2022-03-07 16:05:03
 */
public interface CourseDao {



    /***
     * <p>TODO: 查询课程表所有信息返回课程表list
     * @description
     * @since 2022/3/8 11:53
     * @author QinYD
     * @param
     * @return java.util.List<com.woniuxy.pxxt.entity.Course>
     */
    List<CourseManagerDto> queryViewAll(CourseManageVo courseManageVo);

    /***
     * <p>TODO: 查询课程表所有信息返回课程表list加培训id做筛选条件
     * @description
     * @since 2022/3/8 17:51
     * @author QinYD
     * @param trainId
     * @param course
     * @return java.util.List<com.woniuxy.pxxt.dto.CourseManagerDto>
     */

    List<CourseManagerDto> queryAllByTrainId(@Param("trainId") int trainId, @Param("course") Course course);


    /***
     * <p>TODO: 课程表按id查询返回课程表对象
     * @description
     * @since 2022/3/8 11:54
     * @author QinYD
     * @param id
     * @return com.woniuxy.pxxt.entity.Course
     */

    CourseEditVo queryById(Integer id);


    /***
     * <p>TODO: 课程表新增方法
     * @description
     * @since 2022/3/8 11:54
     * @author QinYD
     * @param courseEditVo
     * @return int
     */
    int insert(CourseEditVo courseEditVo);

    /***
     * <p>TODO: 课程培训中间表插入
     * @description
     * @since 2022/3/11 16:23
     * @author QinYD
     * @param courseEditVo
     * @return int
     */
    int insertTrainCourse(CourseEditVo courseEditVo);

    /***
     * <p>TODO: 资源表插入
     * @description
     * @since 2022/3/14 9:28
     * @author QinYD
     * @param file
     * @return int
     */
    int insertList(FileVo file);

    int insertCourseList(@Param("courseId") int courseId,@Param("file")FileVo file);

    /***
     * <p>TODO: 课程表更新方法
     * @description
     * @since 2022/3/8 11:57
     * @author QinYD
     * @param courseEditVo
     * @return int
     */

    int update(CourseEditVo courseEditVo);
    
    /***
     * <p>TODO: 课程表逻辑删除
     * @description
     * @since 2022/3/8 16:09
     * @author QinYD
     * @param id
     * @return int
     */

    int tombstone(int id);

    /***
     * <p>TODO: 查询所有的经理的名字和id
     * @description
     * @since 2022/3/8 16:14
     * @author QinYD
     * @param
     * @return java.util.List<com.woniuxy.pxxt.dto.ManagerNameDto>
     */
    List<ManagerNameDto> queryManagerName();

    /***
     * <p>TODO: 查询所有的类别的id和名称
     * @description
     * @since 2022/3/8 16:49
     * @author QinYD
     * @param
     * @return com.woniuxy.pxxt.entity.dto.CategoryDto
     */
    
    /***
     * <p>TODO: 查询所有的培训的id
     * @description
     * @since 2022/3/8 17:29
     * @author QinYD
     * @param
     * @return java.util.List<com.woniuxy.pxxt.dto.TrainDto>
     */

    List<TrainDto> queryAllTrain();
    
    /***
     * <p>TODO: 查询所有的课程状态
     * @description
     * @since 2022/3/9 16:34
     * @author QinYD
     * @param 
     * @return java.util.List<com.woniuxy.pxxt.dto.CourseStatusDto>
     */

    List<CourseStatusDto> queryAllCourseStatus();

    /***
     * <p>TODO: 查询给前端用户课程页面的课程信息
     * @description
     * @since 2022/3/14 17:34
     * @author QinYD
     * @param id
     * @return com.woniuxy.pxxt.dto.CourseDto
     */

    CourseDto findCourse(Integer id);

    /***
     * <p>TODO: 查询给前端课程界面的视频信息
     * @description
     * @since 2022/3/14 17:35
     * @author QinYD
     * @param id
     * @return java.util.List<com.woniuxy.pxxt.dto.CourseVideoDto>
     */

    List<FileVo> findCourseFile(Integer id);

    /***
     * <p>TODO: 批量删除资源表的资源
     * @description
     * @since 2022/3/16 19:30
     * @author QinYD
     * @param fileVos
     * @return int
     */

    /***
     * <p>TODO: 根据资源id删除资源
     * @description
     * @since 2022/3/17 19:05
     * @author QinYD
     * @param fileVos
     * @return int
     */

    int deleteListByListId(List<FileVo> fileVos);
    /***
     * <p>TODO: 根据课程id删除课程资源目录
     * @description
     * @since 2022/3/17 19:04
     * @author QinYD
     * @param id
     * @return int
     */

    int deleteCourseListByCourseId(Integer id);

    /***
     * <p>TODO: 插入用户视频记录
     * @description
     * @since 2022/3/17 19:07
     * @author QinYD
     * @param courseVideoScheduleDto
     * @return int
     */

    int insertUserListSchedule(CourseVideoScheduleDto courseVideoScheduleDto);

    /***
     * <p>TODO: 用户课程视频的进度保存
     * @description
     * @since 2022/3/17 19:04
     * @author QinYD
     * @param courseVideoScheduleDto
     * @return int
     */

    int saveSchedule(CourseVideoScheduleDto courseVideoScheduleDto);

    CourseVideoScheduleDto queryCourseVideoSchedule(CourseVideoScheduleDto courseVideoScheduleDto);

    List<CourseVideoScheduleDto> queryCourseAllVideoSchedule(CourseVideoScheduleDto courseVideoScheduleDto);

    List<Integer> findCourseByTrainId(Integer id);
}

